//引入自己封装后的request()
import { request } from '../../request/index.js'
//配置 支持async语法
import regeneratorRuntime from '../../lib/runtime/runtime'

Page({
  data: {
    leftMenuList: [],  //左侧菜单数据
    rightContent: [],  //右侧商品数据
    currentIndex: 0,  //激活的左侧菜单
    scrollTop: 0,  //右侧商品列表滚动条位置
  },
  Cates: [],  //接口的返回数据
  onLoad: function (options) {
    // 1 获取本地存储中的数据(小程序中也是存在本地存储技术)
    const Cates = wx.getStorageSync("cates");
    //2 判断
    if(!Cates){
      //不存在 发送请求获取数据
      this.getCates()
    }else{
      //有旧数据 定义过期时间 10s
      if(Date.now() - Cates.time > 1000*10){
        //重新发送请求
        this.getCates()
      }else{
        //可以使用旧数据
        //console.log('可以使用旧数据')

        this.Cates = Cates.data

        //构造左侧大菜单数据
        let leftMenuList = this.Cates.map(v => v.cat_name)
        //构造右侧的商品数据
        let rightContent = this.Cates[0].children

        this.setData({leftMenuList, rightContent})
      }
    }
  },
  //发起请求，获取分类数据
  async getCates(){

    // request({url: '/categories'})
    // .then(result => {
    //   //console.log(result)
    //   this.Cates = result.data.message
      
    //   //将接口数据保存到本地
    //   wx.setStorageSync("cates", {time: Date.now(), data: this.Cates});

    //   //构造左侧大菜单数据
    //   let leftMenuList = this.Cates.map(v => v.cat_name)
    //   //构造右侧的商品数据
    //   let rightContent = this.Cates[0].children

    //   this.setData({leftMenuList, rightContent})
    // })

    //使用es7的async await来发送请求
    const result = await request({url: '/categories'})

    //console.log(result)
    this.Cates = result.data.message
    
    //将接口数据保存到本地
    wx.setStorageSync("cates", {time: Date.now(), data: this.Cates});

    //构造左侧大菜单数据
    let leftMenuList = this.Cates.map(v => v.cat_name)
    //构造右侧的商品数据
    let rightContent = this.Cates[0].children

    this.setData({leftMenuList, rightContent})
  },
  //左侧菜单点击事件的回调
  handleItemTap(e){
    //console.log(e)

    //取出索引
    const {index} = e.currentTarget.dataset

    //更新右侧的商品数据
    let rightContent = this.Cates[index].children

    //更新data中的数据
    this.setData({currentIndex:index, rightContent, scrollTop: 0})
  }

})
